package pruebasIntegracion;

import juego.Juego;
import junit.framework.TestCase;
import tablero.Posicion;
import tablero.Tablero;
import ataques.Disparo;
import barco.Direccion;
import barco.Lancha;
import barco.Portaaviones;

public class MoverBarcos extends TestCase {

    public void testBarcoNoDeberiaRecibirDisparoAntesDeMoverse() {
        Lancha lancha = new Lancha(Direccion.ARRIBAIZQUIERDA);
        Juego juego = new Juego();
        Tablero tablero = juego.getTablero();
        Posicion posicion = new Posicion(3, 5);
        tablero.colocarBarcoVertical(posicion, lancha);
        posicion.setColumna(4);
        Disparo disparo = new Disparo(posicion);
        juego.lanzarAtaque(disparo);
        tablero.moverBarcos();
        assertEquals(lancha.cantPartesRestantes(), 2);
    }

    public void testBarcoDeberiaRecibirDisparoLuegoDeMoverse() {
        Lancha lancha = new Lancha(Direccion.ARRIBAIZQUIERDA);
        Juego juego = new Juego();
        Tablero tablero = juego.getTablero();
        Posicion posicion = new Posicion(3, 5);
        tablero.colocarBarcoVertical(posicion, lancha);
        posicion.setColumna(4);
        tablero.moverBarcos();
        Disparo disparo = new Disparo(posicion);
        juego.lanzarAtaque(disparo);
        assertEquals(lancha.cantPartesRestantes(), 1);
    }

    public void testBarcoDeberiaRecibirDisparoLuegoDeMoverseDosVeces() {
        Portaaviones portaaviones = new Portaaviones(Direccion.ABAJO);
        Juego juego = new Juego();
        Tablero tablero = juego.getTablero();
        Posicion posicion = new Posicion(4, 4);
        tablero.colocarBarcoHorizontal(posicion, portaaviones);
        Posicion posicionDisparo = new Posicion(6, 6);
        Disparo disparo = new Disparo(posicionDisparo);
        juego.lanzarAtaque(disparo);
        tablero.moverBarcos();
        juego.lanzarAtaque(disparo);
        tablero.moverBarcos();
        juego.lanzarAtaque(disparo);
        assertEquals(portaaviones.cantPartesRestantes(), 4);

    }

}
